package com.un.ebs.sale.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.un.ebs.inventory.domain.InventoryNoteExt;
import com.un.ebs.inventory.domain.InventoryNoteItemExt;
import com.un.ebs.sale.domain.SaleDeliverItemView;
import com.un.ebs.sale.domain.SaleDeliverNoteExt;
import com.un.ebs.sale.domain.SaleDeliverNoteItemExt;
import com.un.ebs.sale.dto.SaleDeliverNoteUpdateDto;
import com.un.ebs.sale.dto.SaleDeliverNoteVo;

import java.util.List;

/**
 * (TbSaleDeliverNote)表服务接口
 *
 * @author liubo
 * @since 2020-08-19 12:17:10
 */
public interface SaleDeliverNoteService {

    String save(SaleDeliverNoteUpdateDto req);

    String addByContract(String saleContractCode);

    void submit(String id);

    void submitCancel(String id);

    void delete(String id);

    SaleDeliverNoteExt queryById(String id);

    SaleDeliverNoteVo queryViewId(String id);

    IPage<SaleDeliverNoteExt> query(String searchText, int pageSize, int pageIndex);

    List<SaleDeliverNoteItemExt> queryItemById(String id);

    IPage<SaleDeliverNoteItemExt> queryItem(String searchText, int pageSize, int pageIndex);

    List<SaleDeliverItemView> queryItemByContract(String contractCode);

    List<SaleDeliverNoteItemExt> queryNoteItemByContract(String contractCode);

    SaleDeliverNoteVo queryCanDeliverNote(String contractCode);

    /**
     * 根据销售出库单，查询销售发货单单头
     * @param inventoryNoteId
     * @return
     */
    SaleDeliverNoteExt queryNoteByInventoryNoteId(String inventoryNoteId);

    boolean queryDeliverStatus(String inventoryNoteId);

}